Using a similar technique as [Internationalization (I18n)](#internationalization-i18n), you can customize the labels and text of the components. Instead of implementing full fledged localization through the use of arb file, the example below shows how customize _only_ the text within the "Sign In" button and the titles of the username, email and password fields: ```dart /// Instantiate a ButtonResolver class CustomButtonResolver extends ButtonResolver { const CustomButtonResolver(); /// Override the signin function @override String signin(BuildContext context) { //the text of the signin button can be customized return 'Login to Amplify'; } } /// Instantiate an InputResolver class CustomInputResolver extends InputResolver { const CustomInputResolver(); /// Override the title function /// Since this function handles the title for numerous fields, /// we recommend using a switch statement so that `super` can be called /// in the default case. @override String title(BuildContext context, InputField field) { switch (field) { case InputField.username: return 'Custom Username Title'; case InputField.email: return 'Custom Email Title'; case InputField.password: return 'Custom Password Title'; case InputField.passwordConfirmation: return 'Custom Password Confirmation Title'; default: return super.title(context, field); } } } /// Instantiate an AuthStringResolver with your two custom resolvers const stringResolver = AuthStringResolver( buttons: CustomButtonResolver(), inputs: CustomInputResolver(), ); /// Pass the string resolver to the Authenticator API final authenticator = Authenticator( stringResolver: stringResolver, child: MaterialApp( title: 'Authenticator Demo', theme: ThemeData.light(), darkTheme: ThemeData.dark(useMaterial3: true), builder: Authenticator.builder(), home: const Scaffold( body: Center( child: Text('You are logged in!'), ), ), ), ); ```